Analyse du commerce électronique brésilien

Importations des librairies

Importations des doonées

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 99441 entries, 0 to 99440
Data columns (total 68 columns):
 #   Column              Non-Null Count  Dtype         
---  ------              --------------  -----         
 0   order_id            99441 non-null  object        
 1   customer_id         99441 non-null  object        
 2   purchase_timestamp  99441 non-null  datetime64[us]
 3   approved_at         99281 non-null  datetime64[us]
 4   delivered_carrier   97658 non-null  datetime64[us]
 5   delivered_customer  96476 non-null  datetime64[us]
 6   estimated_delivery  99441 non-null  datetime64[us]
 7   status              99441 non-null  object        
 8   annee               99441 non-null  int32         
 9   mois                99441 non-null  int32         
 10  annee_mois          99441 non-null  int32         
 11  jour                99441 non-null  int32         
 12  annee_jour          99441 non-null  int32         
 13  jour_semaine        99441 non-null  int32         
 14  trimestre           99441 non-null  int32         
 15  annee_trimestre     99441 non-null  int32         
 16  semaine             99441 non-null  int32         
 17  annee_semaine       99441 non-null  int32         
 18  heure               99441 non-null  int32         
 19  approuvee           99281 non-null  float64       
 20  envoyee             97658 non-null  float64       
 21  livree              96476 non-null  float64       
 22  estimee             99441 non-null  float64       
 23  int_boleto          99440 non-null  float64       
 24  int_credit_card     99440 non-null  float64       
 25  int_debit_card      99440 non-null  float64       
 26  int_not_defined     99440 non-null  float64       
 27  int_voucher         99440 non-null  float64       
 28  value_boleto        99440 non-null  float64       
 29  value_credit_card   99440 non-null  float64       
 30  value_debit_card    99440 non-null  float64       
 31  value_not_defined   99440 non-null  float64       
 32  value_voucher       99440 non-null  float64       
 33  answer_1            99441 non-null  int32         
 34  answer_2            99441 non-null  int32         
 35  answer_3            99441 non-null  int32         
 36  answer_4            99441 non-null  int32         
 37  answer_5            99441 non-null  int32         
 38  comment_1           99441 non-null  int16         
 39  comment_2           99441 non-null  int16         
 40  comment_3           99441 non-null  int16         
 41  comment_4           99441 non-null  int16         
 42  comment_5           99441 non-null  int16         
 43  creation_1          99441 non-null  int32         
 44  creation_2          99441 non-null  int32         
 45  creation_3          99441 non-null  int32         
 46  creation_4          99441 non-null  int32         
 47  creation_5          99441 non-null  int32         
 48  score_1             99441 non-null  int64         
 49  score_2             99441 non-null  int64         
 50  score_3             99441 non-null  int64         
 51  score_4             99441 non-null  int64         
 52  score_5             99441 non-null  int64         
 53  score               99441 non-null  int64         
 54  answer              99441 non-null  int32         
 55  creation            99441 non-null  int32         
 56  comment             99441 non-null  int16         
 57  customer_unique_id  99441 non-null  object        
 58  zip_code            99441 non-null  int32         
 59  city                99441 non-null  object        
 60  state               99441 non-null  object        
 61  name_state          99441 non-null  object        
 62  lat_min             99163 non-null  float64       
 63  lat_max             99163 non-null  float64       
 64  lat                 99163 non-null  float64       
 65  lng_min             99163 non-null  float64       
 66  lng_max             99163 non-null  float64       
 67  lng                 99163 non-null  float64       
dtypes: datetime64[us](5), float64(20), int16(6), int32(24), int64(6), object(7)
memory usage: 39.1+ MB

Concaténation de vente et produit

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 99441 entries, 0 to 99440
Data columns (total 68 columns):
 #   Column              Non-Null Count  Dtype         
---  ------              --------------  -----         
 0   order_id            99441 non-null  object        
 1   customer_id         99441 non-null  object        
 2   purchase_timestamp  99441 non-null  datetime64[us]
 3   approved_at         99281 non-null  datetime64[us]
 4   delivered_carrier   97658 non-null  datetime64[us]
 5   delivered_customer  96476 non-null  datetime64[us]
 6   estimated_delivery  99441 non-null  datetime64[us]
 7   status              99441 non-null  object        
 8   annee               99441 non-null  int32         
 9   mois                99441 non-null  int32         
 10  annee_mois          99441 non-null  int32         
 11  jour                99441 non-null  int32         
 12  annee_jour          99441 non-null  int32         
 13  jour_semaine        99441 non-null  int32         
 14  trimestre           99441 non-null  int32         
 15  annee_trimestre     99441 non-null  int32         
 16  semaine             99441 non-null  int32         
 17  annee_semaine       99441 non-null  int32         
 18  heure               99441 non-null  int32         
 19  approuvee           99281 non-null  float64       
 20  envoyee             97658 non-null  float64       
 21  livree              96476 non-null  float64       
 22  estimee             99441 non-null  float64       
 23  int_boleto          99440 non-null  float64       
 24  int_credit_card     99440 non-null  float64       
 25  int_debit_card      99440 non-null  float64       
 26  int_not_defined     99440 non-null  float64       
 27  int_voucher         99440 non-null  float64       
 28  value_boleto        99440 non-null  float64       
 29  value_credit_card   99440 non-null  float64       
 30  value_debit_card    99440 non-null  float64       
 31  value_not_defined   99440 non-null  float64       
 32  value_voucher       99440 non-null  float64       
 33  answer_1            99441 non-null  int32         
 34  answer_2            99441 non-null  int32         
 35  answer_3            99441 non-null  int32         
 36  answer_4            99441 non-null  int32         
 37  answer_5            99441 non-null  int32         
 38  comment_1           99441 non-null  int16         
 39  comment_2           99441 non-null  int16         
 40  comment_3           99441 non-null  int16         
 41  comment_4           99441 non-null  int16         
 42  comment_5           99441 non-null  int16         
 43  creation_1          99441 non-null  int32         
 44  creation_2          99441 non-null  int32         
 45  creation_3          99441 non-null  int32         
 46  creation_4          99441 non-null  int32         
 47  creation_5          99441 non-null  int32         
 48  score_1             99441 non-null  int64         
 49  score_2             99441 non-null  int64         
 50  score_3             99441 non-null  int64         
 51  score_4             99441 non-null  int64         
 52  score_5             99441 non-null  int64         
 53  score               99441 non-null  int64         
 54  answer              99441 non-null  int32         
 55  creation            99441 non-null  int32         
 56  comment             99441 non-null  int16         
 57  customer_unique_id  99441 non-null  object        
 58  zip_code            99441 non-null  int32         
 59  city                99441 non-null  object        
 60  state               99441 non-null  object        
 61  name_state          99441 non-null  object        
 62  lat_min             99163 non-null  float64       
 63  lat_max             99163 non-null  float64       
 64  lat                 99163 non-null  float64       
 65  lng_min             99163 non-null  float64       
 66  lng_max             99163 non-null  float64       
 67  lng                 99163 non-null  float64       
dtypes: datetime64[us](5), float64(20), int16(6), int32(24), int64(6), object(7)
memory usage: 39.1+ MB

Préparation des données

Nettoyage des valeurs extrem

1/ Les temps de livraison dépendent-ils de facteurs annexes ?

Quelles sont les dimensions qui ont un impact sur le temps de livraison ?

state city annee_trimestre livree
0 AC brasileia 20171 0.900000
1 AC cruzeiro do sul 20174 2.297639
2 AC cruzeiro do sul 20182 23.540556
3 AC epitaciolandia 20174 10.963889
4 AC manoel urbano 20173 11.257222
... ... ... ... ...
13524 TO tocantinopolis 20174 3.322083
13525 TO tocantinopolis 20181 4.264167
13526 TO tocantinopolis 20182 10.511111
13527 TO xambioa 20174 3.153056
13528 TO xambioa 20183 8.562778

13529 rows × 4 columns

1 - Distribution des temps de livraison par état

On remarque que les médianes des délais ne varie pas beaucoup d'un état à l'autre à l'exeption de certains état en dessous des autres.

state city annee_trimestre livree
13409 TO alianca do tocantins 20181 23.877778
13410 TO alianca do tocantins 20182 23.972222
13411 TO almas 20172 21.915556
13412 TO alvorada 20172 19.882778
13413 TO alvorada 20173 11.885833
... ... ... ... ...
13524 TO tocantinopolis 20174 3.322083
13525 TO tocantinopolis 20181 4.264167
13526 TO tocantinopolis 20182 10.511111
13527 TO xambioa 20174 3.153056
13528 TO xambioa 20183 8.562778

120 rows × 4 columns

2 - Densité des temps de livraison pas période

  • La plus part des livraisons se font en 10 jours
  • La distribution a une forme gaussienne avec une queue plus étalée vers la droite ce qui indique des cas où les livraison prennent plus de temps. En effet, il y a un deuxième pic dans les 20 jours qui pourrait correspondre aux livraison ayant un retard.

3 - représentaion de la distribution des temps de livraison par état

RR  :  9.886470189701896
AC  :  9.55711111111111
  • Meme avec des pays qui des distributions assez éloigné (graph. 1) les différences sont minimes

4 - Carte des temps de livraison moyen

  • IL y a beaucoup de point foncé dans le Nord-Ouest de l'Amazonie ce qui montre une faiblesse logistic dans ces zones.
  • Une grande concentration de point jaune dans les régions de Sao Paulo & Rio de Janeiro montre à l'inverse une meilleurs logistique, mais aussi probablement des distance plus courte.
  • Cependant cette analyse n'est pas absolue puisque le sud et les côte présente un nombre conséquent de point rouge.

5 - Temps de livraison moyen par trimestre et par ville

  • Certains États montrent des variations notables des délais selon les trimestres :

    • Roraima (RR) : 12 jours au T1, chute à 7,7 jours au T2, puis remonte progressivement.
    • Amazonas (AM) : 12 jours au T1, baisse à 8,4 jours au T3, puis stabilisation.
    • Amapá (AP) : Passe de 12 jours au T1 à seulement 6,7 jours au T4.
    • Mato Grosso do Sul (MS) : Variations de 10 jours à 9,8 jours, puis retour à 10 jours.
  • Pourquoi ces variations ?

    • Ces États étant géographiquement éloignés et moins industrialisés, ils peuvent être plus sensibles aux changements saisonniers ou aux fluctuations logistiques.
  • Périodes avec des délais légèrement plus élevés

    • Trimestre 2 et 3 (avril-septembre) semblent plus optimisés, avec plusieurs États enregistrant une baisse temporaire des délais.
    • Trimestre 1 et 4 (janvier-mars et octobre-décembre) montrent des délais plus longs, probablement à cause :
      • Du nouvel an et des soldes de début d’année (T1).
      • Du Black Friday et des fêtes de fin d’année (T4).

6 - Comparaison des temps de livraison de tout les Etat

7 - Evolution du temps de livraison par rapport au temps estimé en fonction du trimestre pour une région

RR  :  9.886470189701896
AC  :  9.55711111111111

8 - Temps de livraison selon le poids du produit

Ce graphique nous montre qu'il n'y a aucune variation du temps de livraison en fonction du poids du produit

9 - Relation Poids/Taille vs Temps de livraison

10 - Retards en fonction des dimensions du produit

Il n'y a aucun rapport en le poids ou le volume et le délais de livraison.

11 - Temps moyen de livraison par mode de paiement

De même, le moyen de payement n'a pas d'impact sur le temps de livraison.

12 - Comparaison des écarts de livraison selon le paiement

13 - Répartition des paiements selon les délais

<Figure size 1000x600 with 0 Axes>

2/ Analyse de l'insatisfaction des clients

Nous essayons d'expliquer les facteurs clefs de l'insatisfaction des clients

1 - Score globaux de satisfaction

  • On observe un proportion importante de score_1 par rapport aux score_2 & 3
  • L'évaluation des clients est assez binaire (satisfait / très insatisfait)

2 - Proportion des retards

3 - Score de satisfaction en fonction des délais de livraison

Ce graphique nous montre que les clients restent globalement satisfaits, mais que certains groupes spécifiques pénalisent fortement les délais long

4 - Variation des scores par tranche de délais de livraison

  • Le score moyen oscille entre 2.88 et 2.93, ce qui signifie que les délais de livraison n’ont pas un impact dramatique sur la satisfaction globale.

  • De manière surprenante, ceux ayant attendu plus de 18jours ont aussi un score moyen élevé

  • Cependant ce graphique représente les délais de livraison et non les retard !

La moyenne est moins lisse quand le produit arrive vite ou très lentement !

5 - Focus sur les scores 1 & 5

Graphique 1 (score_1)
  • En prenant le temps de retard (et non le temps de livraison) on observe qu'une note base est toujours attribué quelque soit le temps de retard

  • A l'inverse il n'y a quasiment aucune note basse donné aux produit arrivé en avance

  • Cependant, les note basse sont aussi données lorsque le retard est inexistant ou minim ce qui indique que le retard n'est pas la seul cause d'insatisfaction (score_1)

Graphique 2 (score_5)
  • Contrairement aux notes de 1, aucune note de 5 n'est attribuée après un retard de 6 jours

  • Un retard annule quasiment toute possibilité d'une note parfaite

6 - Répartition des scores en fonction du retard

Conclusion : La plus part des clients dont les commandes sont arrivé en retard propose un score entre 1 et 3. En se référent au graphique deux on peut donc en déduire que 6300 note basse (1 à 3) peuvent être expliqué par un retard.

7 - Insatisfaction des clients par catégorie de produit

Ces graphiques permettent de mettre en évidence les pires catégories de produit

8 - Impacte des retards sur les catégories avec un haute insatisfaction

Ce graphique montre l'insatisfaction des clients pour ces catégories n'est pas liée à un potentiel retard puisque les ces catégories de produit ne présente pas des retard particulièrement élevé.

Ce graphique montre qu'une grand part des score 1 est attribué alors même que la livraison est ponctuel. Ainsi, pour ces catégories les retard ne sont effectivement pas le principale déclencheur de l'insatisfaction.

9 - Totale des insatisfactions pour les catégories problématique

Conclusion : Ces catégories de produit problématique nous permettent d'expliquer 130 score faible supplémentaire.

Valeurs distinctes dans ventes['score_1'] : ['Carte de crédit' 'Boleto' 'Carte de débit' 'Voucher' nan]

3/ Analyse des produits coûteux et des attentes

Identifier si les produits coûteux répondent aux attentes des clients en analysant les scores faibles.

1 - Prix moyen de chaque catégorie d'article

Top 10 des catégories les plus coûteuses :
category_name
fixed_telephony                          2075.345699
computers                                1357.971775
dvds_blu_ray                             1005.155000
small_appliances_home_oven_and_coffee     940.326731
kitchenware_tools_and_gadget              932.772500
signaling_and_security                    890.902581
agro_industry_and_commerce                855.416615
books_imported                            804.960000
drinks                                    782.418833
art                                       713.802500
Name: price, dtype: float64

2 - Proportion des scores faible par prix et catégorie de produit

Certaines catégories très chères affichent des scores faibles élevés, comme :

  • "Kitchenware_tools_and_gadget" (71.4% de scores faibles pour les prix bas et 100% - pour les prix moyens).
  • "PC_gamer" (100% pour la catégorie la plus chère).
  • "Security_and_services" (100% pour la tranche de prix la plus élevée).
  • "La_cuisine" (100% pour la plage de prix moyen).

Explication possible : Ces produits coûtent cher, donc les attentes des clients sont très élevées. Si le produit ne répond pas parfaitement aux attentes, même un petit défaut peut générer une forte insatisfaction.

3 - Relation entre score faible et prix du produit

Ce graphique nous indique qu'il faut ajouter une dimension pour continuer notre analyse, bien qu'une forte proportion des notes faible soit attribué à des produit de bas prix, un prix faible est une mauvaise note ne semble pas être corrélés.

4 - Distribution des scores moyens pondérés pour les produits coûteux

Les produits chers ne garantissent pas une satisfaction élevée. Certaines catégories, comme "dvds_blu_ray", reçoivent majoritairement des scores faibles, ce qui peut suggérer une inadéquation entre le prix et la qualité perçue.

Attention, ici nous prenons le prix moins dans le dernier cartil pour chaque catégorie, c'est pourquoi drinks, art & dvds_blu_ray se trouve dans cette liste. Cela nous permet de nous abstraire de la moyen général des prix sur un produits pour analyse les scores sur les produits du derniers quartil uniquement.

5 - Satisfactions sur l'offre haut de gamme des catégories problématique

Ce graphique nous montre que pratiquement la moitié des produits présente un score faible de 1 à 3 contre sans note à 5. On peut donc en déduire que l'ensemble des produits de cette catégorie n'est pas problématique.

6 - Impacte des délais sur l'offre haut de gamme

Ces graphiques nous montre que le retard n'est pas du tout toléré pour les produits les plus cher.

7 - Impact des retards sur l'offre haut de gamme

Lorsque l'on regarde l'impacte des retards sur l'enssemble de nos donner, on observe environ 10% de retour négatif pour un produit arrivé à l'heure prévu. Ce chiffre double lorsque l'on filtre pour ne garder que les catégories problématique. Ainsi, nous pouvons en conclure qu'une certaines offre dans ces produits ne convient pas aux clients.

Cependant, le dernier graphique qui filtre par catégories à problème et par produit haut de gamme nous montre que l'offre haut de gamme n'a pas une réelle importance dans le score négatif.

En effet, les produits étant à la fois dans une catégorie problématique & étant haut de gamme sont peu nombreux, ce qui peut expliquer des moyen d'insatisfaction parfois très haute.

8 - Nombre de produits impacté